/***********************************************************************
 * Module:  CcnProductos.java
 * Author:  JOlguin01
 * Purpose: Defines the Class CcnProductos
 ***********************************************************************/

package inc.jmc.cyberboard.dao;

/*import inc.jmc.cyberboard.persistence.HistoricoVentasDetalle;
import inc.jmc.cyberboard.persistence.IconoProducto;
import inc.jmc.cyberboard.persistence.Stock;*/

import inc.jmc.cyberboard.entitybeans.IconoProducto;
import inc.jmc.cyberboard.entitybeans.Productos;
import inc.jmc.cyberboard.entitybeans.ProductosWithIconos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;


public class ProductosDao
{
   

	public boolean containsProductos(Connection conn,Productos rec)throws java.sql.SQLException
	{
		boolean ret=false;
		
		ArrayList<Productos> allProductos = getAllProductos(conn);
		for (Iterator<Productos> iter = allProductos.iterator(); iter.hasNext();) {
			Productos element = iter.next();
			if(
					rec.getDescripcion().equalsIgnoreCase(element.getDescripcion())
					||
					rec.getNombreCorto().equalsIgnoreCase(element.getNombreCorto())
					
			)
			{
				ret=true;
				return ret;
			}
			
			
		}
		
		return ret;
		
		
	}
   public java.util.ArrayList<Productos> getAllProductos(Connection conn) throws java.sql.SQLException
    {
        String query1 ="select * from ccn_productos order by nombre_Corto";
        ArrayList<Productos> arry=new ArrayList<Productos>();
        PreparedStatement pstmt=conn.prepareStatement(query1);
        ResultSet rs=pstmt.executeQuery();
        while(rs.next())
        {
            Productos rec=new Productos();
            rec.setIdProducto(new Integer(Integer.parseInt(rs.getString("ID_PRODUCTO"))));
            rec.setDescripcion(rs.getString("DESCRIPCION"));
            rec.setIdIcono( new Integer(Integer.parseInt(rs.getString("ID_ICONO") ) ));
            rec.setNombreCorto(rs.getString("NOMBRE_CORTO"));
            rec.setPrecio(new Float(Float.parseFloat(rs.getString("PRECIO"))));
            if(rs.getString("STOCK")!=null)
            	rec.setStock(new Integer(Integer.parseInt(rs.getString("STOCK"))));
            else
            	rec.setStock(null);
            arry.add(rec);
        }
        rs.close();
        pstmt.close();
        
        return arry;
    
    }
   public java.util.ArrayList<ProductosWithIconos> getAllProductosWithIconsBeans(Connection conn) throws java.sql.SQLException
    {
        StringBuffer query =new StringBuffer();
        query.append("   select   ");
        query.append("   p.id_producto,  ");
        query.append("   p.descripcion,  ");
        query.append("   p.precio ,  ");
        query.append("   p.nombre_corto,  ");
        query.append("   p.stock,  ");
        query.append("   p.id_icono,  ");
        query.append("   i.descripcion iconodesc,  ");
        query.append("   i.ruta,  ");
        query.append("   i.reservado  ");
        query.append("   from   ");
        query.append("   ccn_productos P,   ");
        query.append("   ccn_icono_producto I  ");
        query.append("   where  ");
        query.append("   p.id_icono=i.id_icono  ");
        query.append("   order by p.nombre_Corto  ");

        ArrayList<ProductosWithIconos> arry=new ArrayList<ProductosWithIconos>();
        PreparedStatement pstmt=conn.prepareStatement(query.toString());
        ResultSet rs=pstmt.executeQuery();
        while(rs.next())
        {
            ProductosWithIconos rec=new ProductosWithIconos();
            rec.setIdProducto(new Integer(Integer.parseInt(rs.getString("ID_PRODUCTO"))));
            rec.setDescripcion(rs.getString("DESCRIPCION"));
            rec.setIdIcono( new Integer(Integer.parseInt(rs.getString("ID_ICONO") ) ));
            if(rs.getString("STOCK")!=null)
            	rec.setStock( new Integer(Integer.parseInt(rs.getString("STOCK") ) ));
            else
            	rec.setStock( null);
            rec.setNombreCorto(rs.getString("NOMBRE_CORTO"));
            rec.setPrecio(new Float(Float.parseFloat(rs.getString("PRECIO"))));
            IconoProducto icono1=new IconoProducto();
            icono1.setRuta(rs.getString("RUTA"));
            icono1.setReservado(new Boolean(rs.getBoolean("RESERVADO")));
            rec.setIconoProducto(icono1);
            
            arry.add(rec);
        }
        rs.close();
        pstmt.close();
        
        return arry;
    
    }
   
   public java.util.ArrayList<Productos> getAllProductosBean(Connection conn,ProductosQueryCriteria criterio) throws java.sql.SQLException
    {
        String query1 ="select * from ccn_productos ORDER BY "+ criterio.getOrdenaCriterio()+ (criterio.isAscendente()?"":" desc");
        ArrayList<Productos> arry=new ArrayList<Productos>();
        java.sql.PreparedStatement pstmt=conn.prepareStatement(query1);
        java.sql.ResultSet rs=pstmt.executeQuery();
        while(rs.next())
        {
            Productos rec=new Productos();
            rec.setIdProducto(new Integer(Integer.parseInt(rs.getString("ID_PRODUCTO"))));
            rec.setDescripcion(rs.getString("DESCRIPCION"));
            rec.setIdIcono( new Integer(Integer.parseInt(rs.getString("ID_ICONO") ) ));
            if(rs.getString("STOCK")!=null)
            	rec.setStock( new Integer(Integer.parseInt(rs.getString("STOCK") ) ));
            else
            	rec.setStock( null);
            rec.setNombreCorto(rs.getString("NOMBRE_CORTO"));
            rec.setPrecio(new Float(Float.parseFloat(rs.getString("PRECIO"))));
            arry.add(rec);
        }
        rs.close();
        pstmt.close();
        return arry;
    }
   public java.util.Vector getAllRows(Connection conn,ProductosQueryCriteria criterio) throws java.sql.SQLException
    {
        String query1 ="select * from ccn_productos ORDER BY "+ criterio.getOrdenaCriterio()+ (criterio.isAscendente()?"":" desc");
        Vector arry=new Vector();
        PreparedStatement pstmt=conn.prepareStatement(query1);
        ResultSet rs=pstmt.executeQuery();
        while(rs.next())
        {
            
            Vector vectorRow=new Vector();
            vectorRow.add(rs.getString("NOMBRE_CORTO"));
            vectorRow.add(new Float(Float.parseFloat(rs.getString("PRECIO"))));
            vectorRow.add(rs.getString("DESCRIPCION"));
            if(rs.getString("STOCK")!=null)
            	vectorRow.add(new Integer(Integer.parseInt(rs.getString("STOCK") ) ));
            else
            	vectorRow.add(null);
            //vectorRow.add(new Integer(Integer.parseInt(rs.getString("ID_ICONO") ) ));
            arry.add(vectorRow);
        }
        rs.close();
        pstmt.close();
        return arry;
    }
    public int add(Connection conn,Productos prods) throws java.sql.SQLException
    {
        String insert ="insert into ccn_productos(nombre_corto,precio,descripcion,stock,id_icono) " +
                "values (?,?,?,?,?)";
        PreparedStatement pstmt=conn.prepareStatement(insert);
        pstmt.setString(1,prods.getNombreCorto());
        pstmt.setFloat (2,prods.getPrecio().floatValue());
        pstmt.setString(3,prods.getDescripcion());
        pstmt.setInt(4,prods.getStock().intValue());
        pstmt.setInt(5,prods.getIdIcono().intValue());
        pstmt.executeUpdate();
        pstmt.close();
        
        return 0;
    }
     public int update(Connection conn,Productos prodnuevo,Productos critBusqueda) throws java.sql.SQLException
    {
        String updatestr ="update CCN_PRODUCTOS set " +
                "DESCRIPCION=?," +
                "PRECIO=?," +
                "NOMBRE_CORTO=?," +
                "ID_ICONO=?, " +
                "STOCK=? " +
                "where " +
                "DESCRIPCION=? AND " +
                "NOMBRE_CORTO=? AND " +
                "ID_ICONO=?";
        PreparedStatement pstmt=conn.prepareStatement(updatestr);
        pstmt.setString(1,prodnuevo.getDescripcion());
        pstmt.setFloat(2,prodnuevo.getPrecio().floatValue());
        pstmt.setString(3,prodnuevo.getNombreCorto());
        pstmt.setInt(4,prodnuevo.getIdIcono().intValue());
        pstmt.setInt(5,prodnuevo.getStock().intValue());
        
        pstmt.setString(6,critBusqueda.getDescripcion());
        pstmt.setString(7,critBusqueda.getNombreCorto());
        pstmt.setInt(8,critBusqueda.getIdIcono().intValue());
        int a=pstmt.executeUpdate();
        pstmt.close();
        
        return a;
    }
     public int delete(Connection conn,Productos prods) throws java.sql.SQLException
    {
        String deletestr ="delete from CCN_PRODUCTOS where DESCRIPCION=? AND " +
                "NOMBRE_CORTO=? AND " +
                "ID_ICONO=?";
        PreparedStatement pstmt=conn.prepareStatement(deletestr);
        pstmt.setString(1,prods.getDescripcion());
        pstmt.setString(2,prods.getNombreCorto());
        pstmt.setInt(3,prods.getIdIcono().intValue());
        int a=pstmt.executeUpdate();
        pstmt.close();
        return a;
    }


}